package bizzard.client;
import bizzard.shared.*;

import java.util.HashMap;
import com.google.gwt.user.client.rpc.AsyncCallback;


//+----------------------------------------------------------------------+
//| BizzardServiceAsync
//|
//| - liaison client/serveur des webservices
//+----------------------------------------------------------------------+

public interface BizzardServiceAsync {
	
	/*******************************************************************************
	 * appel asynchrone pour recuperer tous les trolls xml
	 * 
	 * @param dir ~ le repertoire où se trouvent les fichiers des trolls
	 * @param races ~ le hashmap de races existantes
	 * @param callback ~ variable de retour
	 * @return callback ~ hashMap indexé sur le nom de la race associé aux trolls de cette race
	 ******************************************************************************/
	public void getTrolls(HashMap<String, Race> races, String dir, @SuppressWarnings("rawtypes") AsyncCallback<HashMap<String, HashMap>> callback);
	
	/*******************************************************************************
	 * appel asynchrone pour sauvegarder un troll xml
	 * 
	 * @param dir ~ le repertoire où sauvegarder le troll
	 * @param troll ~ le troll à sauvegarder
	 * @param callback ~ variable de retour
	 * @return callback ~ le troll
	 ******************************************************************************/
	public void saveTroll(String dir, Troll troll, AsyncCallback<Troll> callback);
	
	/*******************************************************************************
	 * appel asynchrone pour supprimer un fichier
	 * 
	 * @param name ~ le nom du fichier ( + path )
	 * @param callback ~ variable de retour
	 * @return callback ~ vrai si les fichier ont bien été supprimés
	 ******************************************************************************/
	public void deleteFile(String name, AsyncCallback<Boolean> callback);
	
	/*******************************************************************************
	 * appel asynchrone pour renommer un fichier
	 * 
	 * @param path ~ le nom complet (avec path) du fichier
	 * @param name ~ le nouveau nom (sans path ni extension)
	 * @param callback ~ variable de retour
	 * @return callback ~ le nouveau nom du fichier
	 ******************************************************************************/
	public void renameImg(String path, String name, AsyncCallback<String> callback);
}
